package br.com.beautycenter.view;

import br.com.beautycenter.Funcionalidades.Bean;
import br.com.beautycenter.Funcionalidades.Swing;
import br.com.beautycenter.Funcionalidades.Validacoes;
import br.com.beautycenter.DAO.PersisteProduto;
import br.com.beautycenter.bean.Produto;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.JOptionPane;

public class CadastroProdutos extends javax.swing.JFrame {

    /**
     * operacao = 0 -> salvar
     * operacao = 1 -> atualizar
     * operacao = 2 -> excluir
     */
    int operacao = 0; 
    int posicao = -1;
    
    Produto produto = new Produto();
    Produto produtoTemp = new Produto();
    PersisteProduto persisteProduto = new PersisteProduto();
    
    static List<Produto> listaProdutos = new ArrayList<Produto>(); //Lista com todos os produtos
    /**
     * Preenche o formulário com os dados do produto. O parâmetro é a posição do item na lista
     * @param posicao 
     */
    public void exibirProduto(){
        if(listaProdutos.isEmpty()){          
            novo();
            return;
        }
        
        limparCampos();
        
        txtCodigo.setText(String.valueOf(listaProdutos.get(posicao).getIdProduto()));
        txtDescricao.setText(listaProdutos.get(posicao).getDescricao());
        txtCodigoBarras.setText(listaProdutos.get(posicao).getCodigoBarras());
        txtDataCadastro.setText(new SimpleDateFormat("dd/MM/yyyy").format(listaProdutos.get(posicao).getDtCadastro()));
        txtEstoque.setText(String.valueOf(listaProdutos.get(posicao).getEstoque()));
        txtPrecoCusto.setText(Validacoes.formatoMoeda.format(listaProdutos.get(posicao).getValorCusto()));
        txtPrecoVendas.setText(Validacoes.formatoMoeda.format(listaProdutos.get(posicao).getValorVenda()));
        jRadioButtonSim.setSelected(listaProdutos.get(posicao).isAtivo());
        jRadioButtonNao.setSelected(!listaProdutos.get(posicao).isAtivo());
        
        desativarCampos();
    }
    
    public CadastroProdutos() {
        initComponents();
        iniciarTela();
    }

    private void iniciarTela(){
        limparCampos();
        desativarCampos();
        listaProdutos = persisteProduto.retornarProdutos();
        Validacoes.inicializarMascaras();
        ativarBotoesIniciar();
    }
    
    private void limparCampos(){
        Swing.zerarCampos(jPanelPrincipal.getComponents());
    }
    
    private void desativarCampos(){
        Swing.desativarCampos(jPanelPrincipal.getComponents());
    }
    
    private void ativarBotoesIniciar(){    
        
        Swing.desativarCampos(jPanelBotoes.getComponents());
        
        //se a lista estiver vazia, cria um novo
        if(listaProdutos.isEmpty()){
            novo();
        }else if(posicao < 0){
            btnNovo.setEnabled(true);
            btnPesquisar.setEnabled(true);
            btnSair.setEnabled(true);
        }else {
            btnNovo.setEnabled(true);
            btnPesquisar.setEnabled(true);
            btnSair.setEnabled(true);
            btnEditar.setEnabled(true);
            btnExcluir.setEnabled(true);
        }
    }
    
    /**
     * Quanto clicar em Novo ou Editar ativará os botões: <br/>
     * btnSalvar<br/>
     * btnCancelar<br/>
     * btnSair<br/>
     */
    public void ativarBotoesNovoEditarExcluir(){
        Swing.desativarCampos(jPanelBotoes.getComponents());
        btnSalvar.setEnabled(true);
        btnCancelar.setEnabled(true);
        btnSair.setEnabled(true);
    }
    
    private void ativarCampos(){
        Swing.ativarCampos(jPanelPrincipal.getComponents());
        txtCodigo.setEnabled(false);
        txtDataCadastro.setEnabled(false);
        jRadioButtonSim.setSelected(true);
        jRadioButtonSim.setEnabled(false);
        jRadioButtonNao.setEnabled(false);
        
    }
    
   /**
     * Quanto clicar em Novo ou Editar ativará os botões: <br/>
     * btnSalvar<br/>
     * btnCancelar<br/>
     * btnSair<br/>
     */
    public void ativarBotoesSalvarCancelarSair(){
        Swing.desativarCampos(jPanelBotoes.getComponents());
        btnSalvar.setEnabled(true);
        btnCancelar.setEnabled(true);
        btnSair.setEnabled(true);
    }
    
    public boolean preencherProduto(){
     
        if(operacao == -1){
            limparCampos();
            JOptionPane.showMessageDialog(null, "Produto excluido com sucesso!");
            return true;
        }
        
        produtoTemp = new Produto();
        produtoTemp.setAtivo(true);
        
        if(validarDescricao() 
                && validarCodigoBarra() 
                && validarEstoque() 
                && VerificaPrecoCustoVendaEmBranco() 
                && validarPrecoCusto() 
                && validarPrecoVenda()
                && VerificaCodigoBarrasExistente()){

            if(operacao == 0){
                Date date = new Date();  
                produtoTemp.setDtCadastro(date);
                System.out.println(date);
            }else{
                produtoTemp.setDtCadastro(produto.getDtCadastro());
            }
            
            Double precoVenda = Validacoes.validarCampoMoeda(txtPrecoVendas.getText().trim());
            Double precoCusto = Validacoes.validarCampoMoeda(txtPrecoCusto.getText().trim());
            produtoTemp.setValorVenda(precoVenda);
            produtoTemp.setValorCusto(precoCusto);
            
            String valor = txtCodigoBarras.getText().trim();
            produtoTemp.setCodigoBarras(valor);
            
                        
            Bean.copiarProduto(produtoTemp, produto);
            
            if(operacao == 1){
                persisteProduto.atualizar(produto);
                JOptionPane.showMessageDialog(null, "Produto alterado com sucesso");
            }else{
               persisteProduto.salvar(produto);
               posicao++;
               JOptionPane.showMessageDialog(null, "Produto cadastrado com sucesso");
            }
            desativarCampos();
            limparCampos();
            return true;
        }
        
        return false;
    }
    
    public void novo(){
        operacao = 0;
        limparCampos();
        ativarCampos();
        ativarBotoesSalvarCancelarSair();
        
        txtDescricao.requestFocus();
    }
    
    public boolean validarDescricao(){
        if(!Validacoes.validarCampoTexto(txtDescricao.getText().trim())){
            JOptionPane.showMessageDialog(null, "Campo descrição é obrigatório!");
            txtDescricao.requestFocus();
            return false;
        }

        produtoTemp.setDescricao(txtDescricao.getText().trim());
        return true;
    }
    
    public boolean validarCodigoBarra(){
        Produto temp = new Produto();
        temp.setCodigoBarras(txtCodigoBarras.getText().trim());
        temp = persisteProduto.retornarProdutoPeloCodigoBarras(produto);
        
        if(operacao == 1 && txtCodigoBarras.getText().trim().equals(listaProdutos.get(posicao).getCodigoBarras())){
            produtoTemp.setCodigoBarras(listaProdutos.get(posicao).getCodigoBarras());
            return true;
        }else if(temp != null){
            JOptionPane.showMessageDialog(null, "O codigo de barras informado já existe no sistema.");
            txtCodigoBarras.requestFocus();
            return false;
        }else if(!Validacoes.validarCampoNumerico(txtCodigoBarras.getText().trim())){
            JOptionPane.showMessageDialog(null, "Campo código de barras deve conter apenas números!");
            txtCodigoBarras.requestFocus();
            return false;
        }else{
            
            produtoTemp.setCodigoBarras(txtCodigoBarras.getText().trim());
            return true;
        }

    }
    
    public boolean validarEstoque(){
                     
        if(!Validacoes.validarCampoNumerico(txtEstoque.getText().trim())){
            JOptionPane.showMessageDialog(null, "Campo estoque deve conter apenas números e maior ou igual a zero!");
            txtEstoque.requestFocus();
            return false;
        }else if(!Validacoes.validarCampoTexto(txtEstoque.getText().trim())){
            JOptionPane.showMessageDialog(null, "Campo estoque deve ser preenchido com zero ou algum valor maior que zero!");
            txtEstoque.requestFocus();
            return false;        
        }
        
        produtoTemp.setEstoque(Integer.parseInt(txtEstoque.getText().trim()));
        
        return true;
    }
    
    public boolean validarPrecoCusto(){
        Double precoCusto = Validacoes.validarCampoMoeda(txtPrecoCusto.getText().trim());       
        
        if(precoCusto != null && precoCusto > 0 ){
            produtoTemp.setValorCusto(precoCusto);
            return true;
        }else {
           JOptionPane.showMessageDialog(null, "Valor informado para preço de custo é invalido!");
           txtPrecoCusto.requestFocus();
            return false;
        }
        
    }
    
    public boolean validarPrecoVenda(){
        Double precoVenda = Validacoes.validarCampoMoeda(txtPrecoVendas.getText().trim());
        Double precoCusto = Validacoes.validarCampoMoeda(txtPrecoCusto.getText().trim());
        
        if(precoVenda != null && precoVenda > 0 && precoVenda >= precoCusto){
            produtoTemp.setValorVenda(precoVenda);
            return true;
        }else{        
            JOptionPane.showMessageDialog(null, "Valor informado para o preço de vendas é invalido!");
            txtPrecoVendas.requestFocus();
            return false; 
        }
    }
    
    public boolean VerificaPrecoCustoVendaEmBranco(){
        if(!Validacoes.validarCampoTexto(txtPrecoCusto.getText().trim())){
            JOptionPane.showMessageDialog(null, "Campo preço de custo deve ser preenchido!");
            txtPrecoCusto.requestFocus();
            return false;
        }else if(!Validacoes.validarCampoTexto(txtPrecoVendas.getText().trim())){
            JOptionPane.showMessageDialog(null, "Campo preço de vendas deve ser preenchido!");
            txtPrecoVendas.requestFocus();
            return false; 
        }
        
        return true;
    }
    
    public boolean VerificaCodigoBarrasExistente(){

          if(operacao < 1){
                //verifica se já existe o funcionário cadastrado no banco de dados
                Produto aux = new Produto();
                aux.setCodigoBarras(produtoTemp.getCodigoBarras());
                aux = persisteProduto.retornarProdutoPeloCodigoBarras(aux);

                if(aux == null) return true;

                JOptionPane.showMessageDialog(null, "Codigo de Barras já cadastrado no sistema");
                txtCodigoBarras.requestFocus();
                return false;
            }
            return true;
    }
       
    public void cancelar(){
        limparCampos();
        desativarCampos();
        eventoBotoesSalvarCancelar();
    }
    
    public void eventoBotoesSalvarCancelar(){
        btnNovo.setEnabled(true);
        btnPesquisar.setEnabled(true);
        btnSalvar.setEnabled(false);
        btnCancelar.setEnabled(false);
    }
    
   /**
     * Deixa a tela preparada para a atualização de um produto
     */
    public void editar(){
        operacao = 1;
        
        exibirProduto();
        ativarCampos();
        ativarBotoesNovoEditarExcluir();
        
        
        produto = new Produto();
        produto = listaProdutos.get(posicao);
                
        txtDescricao.requestFocus();
    }
    
    public void excluir(){      
        int resposta = JOptionPane.showConfirmDialog(null, "Deseja realmente excluir esse produto?");
        
        if(resposta == JOptionPane.OK_OPTION){
            listaProdutos.get(posicao).setAtivo(false);
            persisteProduto.atualizar(listaProdutos.get(posicao));
            exibirProduto();
        }

        operacao = -1;
        ativarBotoesNovoEditarExcluir();        
    }
        
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        buttonGroup = new javax.swing.ButtonGroup();
        jPanelBotoes = new javax.swing.JPanel();
        btnNovo = new javax.swing.JButton();
        btnEditar = new javax.swing.JButton();
        btnExcluir = new javax.swing.JButton();
        btnPesquisar = new javax.swing.JButton();
        btnSalvar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();
        btnSair = new javax.swing.JButton();
        jPanelPrincipal = new javax.swing.JPanel();
        jLabelCodigo = new javax.swing.JLabel();
        jLabelDescricao = new javax.swing.JLabel();
        jLabelPrecoCusto = new javax.swing.JLabel();
        jLabelCodigoBarras = new javax.swing.JLabel();
        jLabelPrecoVendas = new javax.swing.JLabel();
        jLabelDtCadastro = new javax.swing.JLabel();
        txtCodigo = new javax.swing.JTextField();
        txtPrecoCusto = new javax.swing.JTextField();
        txtCodigoBarras = new javax.swing.JTextField();
        txtPrecoVendas = new javax.swing.JTextField();
        txtDescricao = new javax.swing.JTextField();
        txtDataCadastro = new javax.swing.JTextField();
        jLabelEstoque = new javax.swing.JLabel();
        txtEstoque = new javax.swing.JTextField();
        jLabelProdutoAtivo = new javax.swing.JLabel();
        jRadioButtonSim = new javax.swing.JRadioButton();
        jRadioButtonNao = new javax.swing.JRadioButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("ERP BEAUTY CENTER - Cadastro de Produtos");
        setPreferredSize(new java.awt.Dimension(800, 250));

        jPanelBotoes.setPreferredSize(new java.awt.Dimension(800, 45));

        btnNovo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/beautycenter/img/Novo.png"))); // NOI18N
        btnNovo.setToolTipText("NOVO");
        btnNovo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNovoActionPerformed(evt);
            }
        });

        btnEditar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/beautycenter/img/Editar.png"))); // NOI18N
        btnEditar.setToolTipText("ALTERAR");
        btnEditar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEditarActionPerformed(evt);
            }
        });

        btnExcluir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/beautycenter/img/Excluir.png"))); // NOI18N
        btnExcluir.setToolTipText("EXCLUIR");
        btnExcluir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnExcluirActionPerformed(evt);
            }
        });

        btnPesquisar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/beautycenter/img/Pesquisar.png"))); // NOI18N
        btnPesquisar.setToolTipText("PESQUISAR");
        btnPesquisar.setBorderPainted(false);
        btnPesquisar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnPesquisarActionPerformed(evt);
            }
        });

        btnSalvar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/beautycenter/img/Salvar.png"))); // NOI18N
        btnSalvar.setToolTipText("SALVAR");
        btnSalvar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSalvarActionPerformed(evt);
            }
        });

        btnCancelar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/beautycenter/img/Cancelar.png"))); // NOI18N
        btnCancelar.setToolTipText("LIMPAR");
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });

        btnSair.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/beautycenter/img/Sair.png"))); // NOI18N
        btnSair.setToolTipText("SAIR");
        btnSair.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSairActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanelBotoesLayout = new javax.swing.GroupLayout(jPanelBotoes);
        jPanelBotoes.setLayout(jPanelBotoesLayout);
        jPanelBotoesLayout.setHorizontalGroup(
            jPanelBotoesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelBotoesLayout.createSequentialGroup()
                .addGap(156, 156, 156)
                .addComponent(btnNovo)
                .addGap(5, 5, 5)
                .addComponent(btnEditar)
                .addGap(5, 5, 5)
                .addComponent(btnExcluir)
                .addGap(5, 5, 5)
                .addComponent(btnPesquisar)
                .addGap(5, 5, 5)
                .addComponent(btnSalvar)
                .addGap(5, 5, 5)
                .addComponent(btnCancelar)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnSair))
        );
        jPanelBotoesLayout.setVerticalGroup(
            jPanelBotoesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelBotoesLayout.createSequentialGroup()
                .addGroup(jPanelBotoesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(btnNovo)
                    .addComponent(btnEditar)
                    .addComponent(btnExcluir)
                    .addComponent(btnPesquisar)
                    .addComponent(btnSalvar)
                    .addComponent(btnCancelar))
                .addGap(5, 5, 5))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelBotoesLayout.createSequentialGroup()
                .addComponent(btnSair)
                .addContainerGap())
        );

        jPanelPrincipal.setBackground(new java.awt.Color(255, 255, 255));
        jPanelPrincipal.setPreferredSize(new java.awt.Dimension(800, 200));

        jLabelCodigo.setText("CÓDIGO:");

        jLabelDescricao.setText("DESCRIÇÃO:");

        jLabelPrecoCusto.setText("PREÇO DE CUSTO:");

        jLabelCodigoBarras.setText("CÓDIGO BARRAS:");

        jLabelPrecoVendas.setText("PREÇO DE VENDA:");

        jLabelDtCadastro.setText("DATA CADASTRO:");

        txtCodigo.setPreferredSize(new java.awt.Dimension(50, 20));

        txtCodigoBarras.setPreferredSize(new java.awt.Dimension(180, 20));

        jLabelEstoque.setText("ESTOQUE:");

        jLabelProdutoAtivo.setText("PRODUTO ATIVO:");

        buttonGroup.add(jRadioButtonSim);
        jRadioButtonSim.setText("SIM");

        buttonGroup.add(jRadioButtonNao);
        jRadioButtonNao.setText("NÃO");

        javax.swing.GroupLayout jPanelPrincipalLayout = new javax.swing.GroupLayout(jPanelPrincipal);
        jPanelPrincipal.setLayout(jPanelPrincipalLayout);
        jPanelPrincipalLayout.setHorizontalGroup(
            jPanelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelPrincipalLayout.createSequentialGroup()
                .addGap(144, 144, 144)
                .addGroup(jPanelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabelProdutoAtivo)
                    .addComponent(jLabelCodigoBarras)
                    .addComponent(jLabelDescricao)
                    .addComponent(jLabelCodigo)
                    .addComponent(jLabelPrecoCusto))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanelPrincipalLayout.createSequentialGroup()
                        .addComponent(txtPrecoCusto, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabelPrecoVendas)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtPrecoVendas, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addGroup(jPanelPrincipalLayout.createSequentialGroup()
                            .addComponent(txtCodigoBarras, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGap(18, 18, 18)
                            .addComponent(jLabelEstoque)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(txtEstoque, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanelPrincipalLayout.createSequentialGroup()
                            .addComponent(txtCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jLabelDtCadastro)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(txtDataCadastro, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addComponent(txtDescricao, javax.swing.GroupLayout.Alignment.LEADING))
                    .addGroup(jPanelPrincipalLayout.createSequentialGroup()
                        .addComponent(jRadioButtonSim)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jRadioButtonNao)))
                .addContainerGap(258, Short.MAX_VALUE))
        );
        jPanelPrincipalLayout.setVerticalGroup(
            jPanelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelPrincipalLayout.createSequentialGroup()
                .addGap(29, 29, 29)
                .addGroup(jPanelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelCodigo)
                    .addComponent(jLabelDtCadastro)
                    .addComponent(txtCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txtDataCadastro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelDescricao)
                    .addComponent(txtDescricao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelCodigoBarras)
                    .addComponent(txtCodigoBarras, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelEstoque)
                    .addComponent(txtEstoque, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelPrecoCusto)
                    .addComponent(txtPrecoCusto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelPrecoVendas)
                    .addComponent(txtPrecoVendas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelProdutoAtivo)
                    .addComponent(jRadioButtonSim)
                    .addComponent(jRadioButtonNao))
                .addContainerGap(48, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanelBotoes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jPanelPrincipal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(0, 0, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanelBotoes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanelPrincipal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(0, 0, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnNovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNovoActionPerformed
        novo();
    }//GEN-LAST:event_btnNovoActionPerformed

    private void btnEditarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEditarActionPerformed
        editar();
    }//GEN-LAST:event_btnEditarActionPerformed

    private void btnExcluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExcluirActionPerformed
        excluir();
    }//GEN-LAST:event_btnExcluirActionPerformed

    private void btnPesquisarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPesquisarActionPerformed
        PesquisarProduto pesquisarProduto = new PesquisarProduto(this, true);
        pesquisarProduto.setLocationRelativeTo(null);
        pesquisarProduto.setVisible(true);
        
        ativarBotoesIniciar();
    }//GEN-LAST:event_btnPesquisarActionPerformed

    private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSalvarActionPerformed
        if(preencherProduto()){
            eventoBotoesSalvarCancelar();
        }
    }//GEN-LAST:event_btnSalvarActionPerformed

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
        cancelar();
    }//GEN-LAST:event_btnCancelarActionPerformed

    private void btnSairActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSairActionPerformed
        dispose();
    }//GEN-LAST:event_btnSairActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnEditar;
    private javax.swing.JButton btnExcluir;
    private javax.swing.JButton btnNovo;
    private javax.swing.JButton btnPesquisar;
    private javax.swing.JButton btnSair;
    private javax.swing.JButton btnSalvar;
    private javax.swing.ButtonGroup buttonGroup;
    private javax.swing.JLabel jLabelCodigo;
    private javax.swing.JLabel jLabelCodigoBarras;
    private javax.swing.JLabel jLabelDescricao;
    private javax.swing.JLabel jLabelDtCadastro;
    private javax.swing.JLabel jLabelEstoque;
    private javax.swing.JLabel jLabelPrecoCusto;
    private javax.swing.JLabel jLabelPrecoVendas;
    private javax.swing.JLabel jLabelProdutoAtivo;
    private javax.swing.JPanel jPanelBotoes;
    private javax.swing.JPanel jPanelPrincipal;
    private javax.swing.JRadioButton jRadioButtonNao;
    private javax.swing.JRadioButton jRadioButtonSim;
    private javax.swing.JTextField txtCodigo;
    private javax.swing.JTextField txtCodigoBarras;
    private javax.swing.JTextField txtDataCadastro;
    private javax.swing.JTextField txtDescricao;
    private javax.swing.JTextField txtEstoque;
    private javax.swing.JTextField txtPrecoCusto;
    private javax.swing.JTextField txtPrecoVendas;
    // End of variables declaration//GEN-END:variables
}